package br.com.documentos.model.entity;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;

import br.com.documentos.model.entity.enuns.TipoParametro;

@Entity
public class ParametroDocumentoUsuario {

	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;
	
	private String nome;
	
	private boolean ativo=true;
	
	private Integer ordem;
	
	@ManyToOne
	@JoinColumn
	private TipoDocumentoUsuario tipoDocumento;
	
	@Enumerated(EnumType.STRING)
	private TipoParametro tipoParametro;
	
	@Transient
	private Integer codigoTipoParametro;
	
	@ManyToOne
	@JoinColumn
	private ParametroDocumentoPadrao referenciaParametroPadrao;

	public ParametroDocumentoUsuario(){}
	
	public ParametroDocumentoUsuario( Integer ordem ){
		this.ordem = ordem;
	}
	
	public ParametroDocumentoUsuario( Long id, String nome, TipoParametro tipoParametro ){
		this.id = id;
		this.nome = nome;
		this.tipoParametro = tipoParametro;
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public boolean isAtivo() {
		return ativo;
	}

	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}

	public ParametroDocumentoPadrao getReferenciaParametroPadrao() {
		return referenciaParametroPadrao;
	}

	public void setReferenciaParametroPadrao(ParametroDocumentoPadrao referenciaParametroPadrao) {
		this.referenciaParametroPadrao = referenciaParametroPadrao;
	}

	public TipoDocumentoUsuario getTipoDocumento() {
		return tipoDocumento;
	}

	public void setTipoDocumento(TipoDocumentoUsuario tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}

	public TipoParametro getTipoParametro() {
		return tipoParametro;
	}

	public void setTipoParametro(TipoParametro tipoParametro) {
		this.tipoParametro = tipoParametro;
	}

	public Integer getOrdem() {
		return ordem;
	}

	public void setOrdem(Integer ordem) {
		this.ordem = ordem;
	}

	public Integer getCodigoTipoParametro() {
		return codigoTipoParametro;
	}

	public void setCodigoTipoParametro(Integer codigoTipoParametro) {
		this.codigoTipoParametro = codigoTipoParametro;
	}

}
